package Offer;

/*
    输入一个整数数组，实现一个函数来调整该数组中数字的顺序，
    使得所有奇数在数组的前半部分，所有偶数在数组的后半部分。
* */

/*
    思路:双指针，然后遍历交换，把奇数放前面，偶数放后面，直到两个指针相遇
* */
public class T21_exchange {
    public int[] exchange(int[] nums) {
        int i = 0, j = nums.length - 1;
        while (i < j) {
            while (i < j && nums[i] % 2 != 0) { //i遇到偶数停下来
                i++;
            }

            while (i < j && nums[j] % 2 == 0) { //j遇到奇数停下来
                j--;
            }

            swap(nums, i, j);
        }
        return nums;
    }

    void swap(int[] nums, int i, int j) {
        int temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
    }
}
